package com.huage.courseplatform.application.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huage.courseplatform.application.mapper.PeriodTemplateItemMapper;
import com.huage.courseplatform.application.model.entity.PeriodTemplateItem;
import com.huage.courseplatform.application.service.PeriodTemplateItemService;
import com.huage.courseplatform.framework.core.impl.BaseServiceImpl;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Collection;

@Service
public class PeriodTemplateItemServiceImpl extends ServiceImpl<PeriodTemplateItemMapper, PeriodTemplateItem> implements PeriodTemplateItemService {
    @Resource
    PeriodTemplateItemMapper periodTemplateItemMapper;

    @Resource
    RedisTemplate redisTemplate;

    @Override
    public boolean saveOrUpdate(PeriodTemplateItem periodTemplateItem) {
        PeriodTemplateCacheClear(periodTemplateItem.getTemplateId());
        return super.saveOrUpdate(periodTemplateItem);
    }

    @Override
    public boolean removeById(Serializable id) {
        PeriodTemplateCacheClear((String) id);
        return super.removeById(id);
    }

    @Override
    public boolean removeByIds(Collection<? extends Serializable> idList) {
        idList.forEach(id->{
            PeriodTemplateCacheClear((String) id);
        });
        return super.removeByIds(idList);
    }



    private void PeriodTemplateCacheClear(String templateId){
        PeriodTemplateItem periodTemplateItemOld =  periodTemplateItemMapper.selectById(templateId);
        Assert.isTrue(!ObjectUtils.isEmpty(periodTemplateItemOld),"找不到修改的模板明细");
        String id = periodTemplateItemOld.getTemplateId();
        String key = "Service:PeriodTemplateService:id" + id;
        if(redisTemplate.hasKey(key)){
            redisTemplate.delete(key);
        }
    }
}
